/**
 * @file show_ads.c
 * @author pen
 * @brief 广告文字滚动显示功能实现
 * 
 * 实现功能：
 * 1. 底部半透明广告条容器
 * 2. 循环滚动文字效果
 * 
 * @version 0.1
 * @date 2025-10-16
 * 
 */

#include "show_ads.h"


/**
 * @brief 创建广告标签
 * 
 * 在屏幕底部创建半透明广告条，显示循环滚动的品牌广告语
 * 
 */
void lv_pen_label(void)
{
    /* 创建广告标签容器 */
    lv_obj_t *ads_cont = lv_obj_create(lv_scr_act());
    
    // 设置容器尺寸：宽度100%屏幕宽度，高度40像素
    lv_obj_set_size(ads_cont, LV_PCT(100), 40);
    
    // 将容器对齐到屏幕底部
    lv_obj_align(ads_cont, LV_ALIGN_BOTTOM_MID, 0, 0);
    
    // 设置容器样式：半透明黑色背景，直角
    lv_obj_set_style_bg_color(ads_cont, lv_color_hex(0x000000), 0);
    lv_obj_set_style_bg_opa(ads_cont, LV_OPA_50, 0);  // 50%不透明度
    lv_obj_set_style_border_width(ads_cont, 0, 0);
    lv_obj_set_style_radius(ads_cont, 0, 0);          // 直角
    
    // 添加上边框作为视觉分隔
    lv_obj_set_style_border_side(ads_cont, LV_BORDER_SIDE_TOP, 0);
    lv_obj_set_style_border_color(ads_cont, lv_color_hex(0x40afce), 0);
    lv_obj_set_style_border_width(ads_cont, 2, 0);
    
    // 移除容器内边距
    lv_obj_set_style_pad_all(ads_cont, 0, 0);

    /* 创建滚动标签对象 */
    lv_obj_t *label = lv_label_create(ads_cont);
    
    // 设置标签尺寸：稍微小于容器，留出边距
    lv_obj_set_size(label, LV_PCT(98), LV_PCT(90));
    lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
    
    // 设置标签的模式为循环滚动
    lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR);
    
    // 启用文本重着色功能
    lv_label_set_recolor(label, true);
    
    // 设置文本内容（凯迪拉克品牌风格的广告语）
    lv_label_set_text(
        label,
        "#136380ff CT5 # "
        "#147e8bff 锐意锋芒与优雅格调的完美融合 # "
        "#147e8bff 每一次出发都是与自我风格的深度对话 # "
        "#147e8bff 新生代风范的自信宣言 # "
        "#147e8bff 见证所有伟大源自敢于突破常规的勇敢初心 # "
    );
    
    // 设置中文字体
    lv_obj_set_style_text_font(label, &chinese_ziku, 0);
    
    // 设置文字样式
    lv_obj_set_style_text_color(label, lv_color_white(), 0);  // 默认文字颜色
    lv_obj_set_style_text_align(label, LV_TEXT_ALIGN_CENTER, 0);  // 文字居中
    
    // 设置文字阴影效果，增强可读性
    lv_obj_set_style_text_opa(label, LV_OPA_COVER, 0);
    lv_obj_set_style_text_letter_space(label, 1, 0);  // 字间距
    
    // 设置标签背景为完全透明
    lv_obj_set_style_bg_opa(label, LV_OPA_0, 0);
    
    /* 添加滚动速度控制 */
    // 创建动画控制滚动速度
    lv_anim_t scroll_anim;                       // 定义动画对象
    lv_anim_init(&scroll_anim);                  // 初始化动画

    lv_anim_set_var(&scroll_anim, label);        // 设置动画目标为标签对象
    lv_anim_set_exec_cb(&scroll_anim, (lv_anim_exec_xcb_t)lv_label_set_text_sel_start);
    lv_anim_set_values(&scroll_anim, 0, 1000);  // 滚动范围
    lv_anim_set_time(&scroll_anim, 2000);      // 20秒完成一次完整滚动
    lv_anim_set_repeat_count(&scroll_anim, LV_ANIM_REPEAT_INFINITE);   // 设置无限重复播放

    /* 启动滚动动画 */
    lv_anim_start(&scroll_anim);

    // /* 添加光晕效果 */
    // lv_obj_t *glow_effect = lv_obj_create(lv_scr_act());
    // lv_obj_set_size(glow_effect, LV_PCT(100), 5);
    // lv_obj_align(glow_effect, LV_ALIGN_BOTTOM_MID, 0, -40);  // 在广告条上方
    
    // // 设置光晕样式：蓝色渐变
    // lv_obj_set_style_bg_color(glow_effect, lv_color_hex(0x40afce), 0);
    // lv_obj_set_style_bg_grad_color(glow_effect, lv_color_hex(0x1a5a7a), 0);
    // lv_obj_set_style_bg_grad_dir(glow_effect, LV_GRAD_DIR_VER, 0);
    // lv_obj_set_style_bg_opa(glow_effect, LV_OPA_30, 0);
    // lv_obj_set_style_border_width(glow_effect, 0, 0);
    // lv_obj_set_style_radius(glow_effect, 0, 0);
    
    // // 光晕淡入动画
    // lv_anim_t glow_anim;
    // lv_anim_init(&glow_anim);
    // lv_anim_set_var(&glow_anim, glow_effect);
    // lv_obj_set_style_bg_opa(glow_effect, LV_OPA_0, 0);  // 初始完全透明
    // lv_anim_set_values(&glow_anim, LV_OPA_0, LV_OPA_30);
    // lv_anim_set_exec_cb(&glow_anim, (lv_anim_exec_xcb_t)lv_obj_set_style_bg_opa);
    // lv_anim_set_time(&glow_anim, 1500);
    // lv_anim_set_delay(&glow_anim, 800);
    // lv_anim_start(&glow_anim);
}

